/**
 * @param {Object} obj
 * @param {String} path
 * @param {String} parameter
 */
function safeGet(obj, path, prompt = "undefined") {
    // 请在这里实现 中文我就不取了
    const koko = path.trim().match(/[A-Za-z123456789-_]+/g);

    for(let i = 0; i < koko.length; i++) {
        if (!obj[koko[i]]) {
            return prompt;
        }

        obj = obj[koko[i]];
    }

    return obj;
}

var deelyNestedObj = {
    a: {
        b: {
            c: {
                d: 123,
            },
        },
    },
};

console.log(safeGet(deelyNestedObj, "a.b.c.d", "Alipay")); // 123
console.log(safeGet(deelyNestedObj, " a. b..c..d ")); // 123
console.log(safeGet(deelyNestedObj, "a.b.c1.d")); // undefined
console.log(safeGet(deelyNestedObj, "a.b.c1.d", "Alipay")); // "Alipay"
console.log(safeGet(deelyNestedObj, "a.b.c.d.e.f.g.h"));
